package mx.ipn.pruebas;

import java.util.ArrayList;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;

public class PruebaDAOs9 {
	public static void main(String[] args) {

		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);
		short resultado;
		
		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// MUNICIPIO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<MUNICIPIO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			EstadoTO estadoTO = new EstadoTO();
			estadoTO.setIdEstado((short)1);
			
			MunicipioDAO municipioDAO = fabricaMySQL.getMunicipioDAO();
			MunicipioTO municipioTO = new MunicipioTO(0,"acatlan",estadoTO);

			// insert
			if (municipioDAO.insertMunicipio(municipioTO)) {
				municipioDAO.insertMunicipio(municipioTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = municipioDAO.deleteMunicipio((short)17);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>>>>borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al Borrado");

			// actualiza 
			municipioTO.setIdMunicipio(1);
			estadoTO.setIdEstado((short)9);
			municipioTO.setEstadoTO((estadoTO));

			resultado = municipioDAO.updateMunicipio(municipioTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			municipioTO = municipioDAO.findMunicipioById(1);
			if (municipioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("MUNICIPIO");
				ImprimirTO.Imprime(municipioTO);
				System.out.println("ESTADO");
				ImprimirTO.Imprime(municipioTO.getEstadoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}
			
			// Busca
			System.out.println("------------------------- BUSQUEDA POR NOMBRE ESTADO");
			municipioTO = municipioDAO.findMunicipioByNombreEstado("iztapalapa",(short)9);
			if (municipioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("MUNICIPIO");
				ImprimirTO.Imprime(municipioTO);
				System.out.println("ESTADO");
				ImprimirTO.Imprime(municipioTO.getEstadoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT MUNICIPIO +**");
			java.util.Collection<MunicipioTO> listMunicipioTO = municipioDAO
					.selectMunicipio();
			for (int i = 0; i < listMunicipioTO.size(); i++) {
				municipioTO = ((ArrayList<MunicipioTO>) listMunicipioTO).get(i);
				System.out.println("MUNICIPIO");
				ImprimirTO.Imprime(municipioTO);
				System.out.println("ESTADO");
				ImprimirTO.Imprime(municipioTO.getEstadoTO());

			}
			
			// Busca
			System.out.println("------------------- BUSQUEDA POR ESTADO");
			municipioTO = municipioDAO.selectMunicipioByEstado((short)9);
			if (municipioTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("MUNICIPIO");

				for (int x = 0; x < municipioTO.getListIdMunicipio().length; x++) {
					System.out.println("IDMUNICIPIO");
					System.out.println(municipioTO.getListIdMunicipio()[x]);
				}
				for (int x = 0; x < municipioTO.getListNombre().length; x++) {
					System.out.println("NOMBRE");
					System.out.println(municipioTO.getListNombre()[x]);
				}
				System.out.println("ESTADO");
				ImprimirTO.Imprime(municipioTO.getEstadoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}
			

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
		

		// ***********************************************************************************************
		// //
		// ***********************************************************************************************
		// PUESTO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<PUESTO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			TipoEmpleadoTO tipoEmpleadoTO = new TipoEmpleadoTO();
			tipoEmpleadoTO.setIdTipoEmpleado((short)1);
			
			PuestoDAO puestoDAO = fabricaMySQL.getPuestoDAO();
			PuestoTO puestoTO = new PuestoTO((short)0,"DBA","personal encargado de algo diferente",tipoEmpleadoTO,true);

			// insert
			if (puestoDAO.insertPuesto(puestoTO)) {
				puestoDAO.insertPuesto(puestoTO);
				System.out
						.println("+++++++++++++++++++ Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = puestoDAO.DesActivaPuesto((short)5);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>>>>borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al Borrado");

			// actualiza 
			puestoTO.setIdPuesto((short)1);
			tipoEmpleadoTO.setIdTipoEmpleado((short)6);
			puestoTO.setTipoEmpleadoTO((tipoEmpleadoTO));

			resultado = puestoDAO.updatePuesto(puestoTO);
			if (resultado == 1)
				System.out
						.println(">>>>>>>>>>>>>>>>>>> Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("------------------------- BUSQUEDA POR ID");
			puestoTO = puestoDAO.findPuestoById((short)1);
			if (puestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PUESTO");
				ImprimirTO.Imprime(puestoTO);
				System.out.println("TIPOEMPLEADO");
				ImprimirTO.Imprime(puestoTO.getTipoEmpleadoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}
			
			// Busca
			System.out.println("------------------------- BUSQUEDA POR NOMBRE TIPOEMPLEADO");
			puestoTO = puestoDAO.findPuestoByNombreTipoEmpleado("secretario de sitio",(short)6);
			if (puestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PUESTO");
				ImprimirTO.Imprime(puestoTO);
				System.out.println("TIPOEMPLEADO");
				ImprimirTO.Imprime(puestoTO.getTipoEmpleadoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT PUESTO +**");
			java.util.Collection<PuestoTO> listPuestoTO = puestoDAO
					.selectPuesto();
			for (int i = 0; i < listPuestoTO.size(); i++) {
				puestoTO = ((ArrayList<PuestoTO>) listPuestoTO).get(i);
				System.out.println("PUESTO");
				ImprimirTO.Imprime(puestoTO);
				System.out.println("TIPOEMPLEADO");
				ImprimirTO.Imprime(puestoTO.getTipoEmpleadoTO());

			}
			
			// busqueda multiple
			System.out.println("**++++++++++++++++++++++ SELECT PUESTO ACTIVO+**");
			listPuestoTO = puestoDAO.selectPuestoActivo();
			for (int i = 0; i < listPuestoTO.size(); i++) {
				puestoTO = ((ArrayList<PuestoTO>) listPuestoTO).get(i);
				System.out.println("PUESTO");
				ImprimirTO.Imprime(puestoTO);
				System.out.println("TIPOEMPLEADO");
				ImprimirTO.Imprime(puestoTO.getTipoEmpleadoTO());
			}
			
			// Busca
			System.out.println("------------------- BUSQUEDA POR TIPOEMPLEADO");
			puestoTO = puestoDAO.selectPuestoByTipoEmpleado((short)6);
			if (puestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PUESTO");

				for (int x = 0; x < puestoTO.getListIdPuesto().length; x++) {
					System.out.println("IDPUESTO");
					System.out.println(puestoTO.getListIdPuesto()[x]);
				}
				for (int x = 0; x < puestoTO.getListNombre().length; x++) {
					System.out.println("NOMBRE");
					System.out.println(puestoTO.getListNombre()[x]);
				}
				for (int x = 0; x < puestoTO.getListDescripcion().length; x++) {
					System.out.println("DESCRIPCION");
					System.out.println(puestoTO.getListDescripcion()[x]);
				}
				System.out.println("TIPOEMPLEADO");
				ImprimirTO.Imprime(puestoTO.getTipoEmpleadoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}
			
			System.out.println("------------------- BUSQUEDA POR TIPOEMPLEADO ACTIVO");
			puestoTO = puestoDAO.selectPuestoByTipoEmpleado((short)6);
			if (puestoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("PUESTO");

				for (int x = 0; x < puestoTO.getListIdPuesto().length; x++) {
					System.out.println("IDPUESTO");
					System.out.println(puestoTO.getListIdPuesto()[x]);
				}
				for (int x = 0; x < puestoTO.getListNombre().length; x++) {
					System.out.println("NOMBRE");
					System.out.println(puestoTO.getListNombre()[x]);
				}
				for (int x = 0; x < puestoTO.getListDescripcion().length; x++) {
					System.out.println("DESCRIPCION");
					System.out.println(puestoTO.getListDescripcion()[x]);
				}
				System.out.println("TIPOEMPLEADO");
				ImprimirTO.Imprime(puestoTO.getTipoEmpleadoTO());

			} else {
				System.out.println("Falla en la seleccion");
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}
	}

}
